\section[Testframework]{Ein Framework für automatisiertes Testen von Javascript Web Anwendungen}
%\subsection{Eine Paperzusammenfassung von Christoph Lehnert}

%\item Hintergrund
%\item Framework-/Algorithmus Beschreibung
%\item Priorisierungs- \&Eingabe-Generatoren - Strategien
%\item Teststrategien
%\item Evaluation
%\item Bewertung des Papers

\subsection{Hintergrund}
\begin{frame}
	\frametitle{\insertsubsection}
	\framesubtitle{\insertsection}
	\begin{itemize}
		\item Problem: JavaScript-Funktionen sind nur schwer gezielt testbar
		\item Ziel: Entwicklung von Algorithmen zur automatischen Test-Generierung für JavaScript-Anwendungen, hohe Code-Abdeckung
		\item Nach \cite{arzti_test_framework}
	\end{itemize}
\end{frame}

\subsection{Framework-/Algorithmus Beschreibung}
\begin{frame}
	\frametitle{\insertsubsection}
	\framesubtitle{\insertsection}
	\begin{itemize}
		\item Parametrisierung des Frameworks: Ausführunseinheit, Eingabe-Generator, Priorisierungsfunktion
		\item Zu Beginn: Übergabe einer URL sowie eines Startzustands
		\item Generierung einer Eingabe, Speicherung in der Arbeitsliste 
		\item Solange diese nicht leer ist:
		\begin{itemize}
			\item \small{Entnahme: aktuelle Test-Eingabe, der zu simulierende Browser- und Server-Zustand, URL}
			\item \small{Abarbeitung der enthaltenen Event-Sequenz}
			\item \small{Prüfung: war der erreichte Endzustand zuvor Ausgangszustand eines anderen Tests? Evtl. Generierung neuer Test-Eingaben.}
			\item \small{Erneute Priorisierung der Tests in der Arbeitsliste}
		\end{itemize}
	\end{itemize}
\end{frame}

\subsection{Priorisierungs- \& Eingabe-Generatoren - Strategien}
\begin{frame}
	\frametitle{\insertsubsection}
	\framesubtitle{\insertsection}
	
	Priorisierungsfunktion: 
	
			\begin{itemize}
				\item \small{\emph{Default}: Alle Event-Sequenzen gleich priorisiert}
				\item \small{\emph{Coverage}: Bevorzugt Event-Sequenzen mit bisher geringer Code-Abdeckung}
				\item \small{\emph{Read/Write Sets}: Betrachtet Abhängigkeiten innerhalb der Event-Sequenz}
			\end{itemize}
	 Eingabe-Generatoren-Strategien:
			\begin{itemize}
				\item \small{\emph{Default}: führt Standard-Aktionen aus}
				\item \small{\emph{Dynamically Collected Constants}: Verwendet Konstanten zur Eingaben-Generierung}
			\end{itemize}
			Zum Testen des Frameworks: 5 Strategien, die verschiedene Priorisierungsfunktionen und Eingabe-Generatoren kombinieren: \emph{Events}, \emph{Const}, \emph {Cov}, \emph {All}, \emph {Initial}
\end{frame}

\subsection{Evaluation}
\begin{frame}
	\frametitle{\insertsubsection}
	\framesubtitle{\insertsection}
	Untersucht werden elf JavaScript-Anwendungen. 
	Code-Abdeckung bei 100 Test-Generierungen je Programm \& Algorithmus:
	\begin{itemize}
		\item \emph {Initial}: durchschnittliche Abdeckung von 38\%
		\item Die übrigen Algorithmen: Abdeckung von ca. 70\%
		\item \emph {Cov} und \emph {All} erreichen ihre Maximalabdeckung weitaus früher als \emph {Events} und \emph {Const} 
	\end{itemize}
	Programmfehler:
	\begin{itemize}
		\item \emph {Events} und \emph {All}: Mehr HTML-Fehler als beim \emph{Initial} Algorithmus werden gefunden
	\end{itemize}
\end{frame}

\subsection{Bewertung des Papers}
\begin{frame}
	\frametitle{\insertsubsection}
	\framesubtitle{\insertsection}
	\begin{itemize}
		\item Autoren sind objektiv, ihre Aussagen  begründen sie verständlich
		\item Vergleiche mit ähnlichen Test-Frameworks und Werkzeugen werden angestellt
		\item Die Gründe für die Entwicklung des Frameworks werden dargestellt
		\item Es wird verdeutlicht, dass eine Neuerung zu bisher vorhandenen Arbeiten und Test-Frameworks vorliegt
		\item Fragestellungen bei der Evaluation werden klar formuliert
	\end{itemize}
\end{frame}
